package com.atguigu06.polymorphism;

/**
 * ClassName: PersonTest
 * Package: com.atguigu06.polymorphism
 * Description:
 *
 * @Author ZY
 * @Create 19:04
 * @Version 1.0
 */
public class PersonTest {
    public static void main(String[] args) {

        //多态性之前的场景:
        Person p1 = new Person();
        Man m1 = new Man();


        //多态性之后的场景:
        Person p2 = new Man();


        /*
            多态性的应用:虚拟方法调用
            在多态的场景下，调用方法时，
                编译时，认为方法是左边声明的父类的类型的方法（即被重写的方法）
                执行时，实际执行的是子类重写父类的方法

            即，方法调用时，编译看左边，方法执行看右边
         */

        p2.eat();
        p2.walk();

        //不满足多态性的适用性
        System.out.println(p2.id);//1001

    }
}
